let prefix="http://localhost:8080/";
function loadTable() {

    $('#mytable').bootstrapTable({
        method : 'get',
        url : "/webapi/students/list",//请求路径
        striped : true, //是否显示行间隔色
        pageNumber : 1, //初始化加载第一页
        pagination : true,//是否分页
        sidePagination : 'server',//server:服务器端分页|client：前端分页
        pageSize : 3,//单页记录数
        pageList : [ 5, 10, 20, 30 ],//可选择单页记录数
        showRefresh : true,//刷新按钮
        queryParams : function(params) {//上传服务器的参数
            return {//如果是在服务器端实现分页，limit、offset这两个参数是必须的
                limit: params.limit, // 每页显示数量
                offset: params.offset, // SQL语句起始索引
                page : (params.offset / params.limit) + 1, //当前页码

                Name: $('#search_name').val(),
                Tel: $('#search_tel').val()
            };
        },
        columns : [ {
            title : '学生ID',
            field : 'id',
            sortable : true
        }, {
            title : '姓名',
            field : 'name',
            sortable : true
        }, {
            title : '密码',
            field : 'password',
        }, {
            title : '学号',
            field : 'no',
        }, {
            title : '性别',
            field : 'sex',
        }, {
            title : '年龄',
            field : 'age',
        } , {
                title: '操作',
                formatter: operateFormatter // 自定义操作列
            }]
    })
}

/**
 * 点击新增学生按钮时进行增加
 */
function addStudent(){
    const data = $("#formStudent").serialize();
    if(!validateForm()){
        return;
    }
    $.ajax({
        url:"/webapi/students/insert",
        method:"post",
        data: data,
    }).done(function (){
        $('#mytable').bootstrapTable('append', [data]);
        $("#myModal").modal("hide");
        $('#formStudent')[0].reset();
        $('#mytable').bootstrapTable('refresh');
    })
}

/**
 * 根据得到的当前id进行删除操作
 * @param id
 */
function deleteStudent(id){
    $.ajax({
        url:"/webapi/students/delete/"+id,
        method: "delete",
    }).done(function (){
        $('#mytable').bootstrapTable('refresh');
    })
}

/**
 * 进行更新操作，当用户点击更新时，表单中显示当前信息，点击保存时保存修改的信息
 * @type {null}
 */
let getId = null;
function getStudent(id){
    $("#myModal").modal("show");
    $.ajax({
        url:"/webapi/students/getdata/"+id,
        method:"get",
        success:function (rs) {
            $("#name").val(rs.name);
            $("#password").val(rs.password)
            $("#no").val(rs.no);
            $("#sex").val(rs.sex);
            $("#age").val(rs.age);
        }
    });
    getId = id;
}
function updateStudent(id){
    const newStudent = $("#formStudent").serialize();
    if(!validateForm()){
        return;
    }
    if(id) {
        $.ajax({
            url: "/webapi/students/update/" + id,
            method: "put",
            data: newStudent,
        }).done(function () {
            $("#myModal").modal("hide");
            $('#mytable').bootstrapTable('refresh');
        })
    }
}

/**
 * 保存事件，获取当前信息的id值，根据id是否为空来执行新增与更新操作
 */
$("#save").on("click",function (event){
    event.preventDefault();
    if(getId!=null){
        updateStudent(getId);
    }else{
        addStudent()
    }
})
function searchStudent(){
    let no = document.getElementById('studentNoInput').value;  // 获取输入的学号
    if (no) {
        $.ajax({
            type: 'GET',
            url: '/webapi/students/search/'+no,
            success: function(data) {
                $('#mytable').bootstrapTable('destroy'); // 先销毁之前的表格实例
                $('#mytable').bootstrapTable({
                    data: data,
                    striped: true,
                    pagination: true,
                    pageSize: 3,
                    pageList: [5, 10, 20, 30],
                    columns: [{
                        title: '学生ID',
                        field: 'id',
                        sortable: true
                    }, {
                        title: '姓名',
                        field: 'name',
                        sortable: true
                    }, {
                        title: '密码',
                        field: 'password',
                    }, {
                        title: '学号',
                        field: 'no',
                    }, {
                        title: '性别',
                        field: 'sex',
                    }, {
                        title: '年龄',
                        field: 'age',
                    }, {
                        title: '操作',
                        formatter: operateFormatter // 自定义操作列
                    },]
                });
            }
        });
    }
}
// 自定义操作列的渲染函数
function operateFormatter(value, row) {
    return [
        '<button type="submit" class="btn btn-success" onclick="getStudent(' + row.id + ')">更新</button>',
        '<button type="submit" class="btn btn-danger" onclick="deleteStudent(' + row.id + ')">删除</button>'
    ].join('');
}
// 在关闭模态框时清除表单数据
$('#myModal').on('hidden.bs.modal', function (e) {
    // 清空表单中的数据
    $('#formStudent')[0].reset();
    getId = null;//getId设置为空，防止在新增操作时获取到有效的 id
});

// 表单验证函数
function validateForm() {
    let isValid = true;

    // 验证姓名
    const nameInput = $("#name").val().trim();
    const nameError = $("#nameError");
    if (nameInput.length === 0 || nameInput.length < 2 || nameInput.length > 15) {
        nameError.text('姓名至少由2个字符组成，最大不超过15个字符！');
        isValid = false;
    } else {
        nameError.text('');
    }

    // 验证密码
    const passwordInput = $("#password").val().trim();
    const passwordError = $("#passwordError");
    const passwordRegex = /^(?=.*\d)(?=.*[A-Za-z])[\da-zA-Z]{6,20}$/;
    if (passwordInput.length === 0 || !passwordRegex.test(passwordInput)) {
        passwordError.text('密码必须是6-20个字母与数字的组合！');
        isValid = false;
    } else {
        passwordError.text('');
    }

    // 验证学号
    const noInput = $("#no").val().trim();
    const noError = $("#noError");
    const noRegex = /^[0-9]{10,20}$/;
    if (noInput.length === 0 || !noRegex.test(noInput)) {
        noError.text('学号只能由0-9的数字组成且长度为10-20位！');
        isValid = false;
    } else {
        noError.text('');
    }

    // 验证性别
    const sexInput = $("#sex").val().trim();
    const sexError = $("#sexError");
    if (sexInput.length === 0) {
        sexError.text('性别不能为空！');
        isValid = false;
    } else {
        sexError.text('');
    }

    // 验证年龄
    const ageInput = $("#age").val().trim();
    const ageError = $("#ageError");
    if (ageInput.length === 0 || ageInput < 15 || ageInput > 100) {
        ageError.text('年龄必须要在15到100之间！');
        isValid = false;
    } else {
        ageError.text('');
    }


    return isValid;
}

$(function(){
    loadTable()
})